<?php
mb_internal_encoding('UTF-8'); // UTF8 als interne Codierung für die multibyte string funktionen
 $fehlertyp = array (E_WARNING => 'E_WARNING',
                      E_NOTICE => 'E_NOTICE',
                      E_USER_ERROR => 'E_USER_ERROR',
                      E_USER_WARNING => 'E_USER_WARNING',
                      E_USER_NOTICE => 'E_USER_NOTICE',
                      E_STRICT => 'E_STRICT',
                      E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR');

 function Fehler_handler($errno, $errmsg, $filename, $linenum)
  {
   echo Date('Y-m-d H:i:s') . ' - ' . $fehlertyp[$errno] . ': ' . $errmsg . ' in \'' . $filename . '\' at line ' . $linenum."<br>";
  }

set_error_handler('Fehler_handler');
error_reporting(E_ALL);


echo galerie::display();

class galerie{
	
	private static $types=array('.png','.jpg');
	
	public static function display(){
		$res="";
		$dir='./';
		if(isset($_GET['dir'])&& strlen($_GET['dir'])>0){ // verzeichnis als get parameter gesetzt
			$dir=$_GET['dir'];
			if($dir{strlen($dir)-1}!='/')
				$dir=$dir.'/';
			$dir=str_replace("./","",$dir);	
			$dir="./".$dir;	
		}	

		$re=galerie::getPicsOrDirs($dir);

		foreach($re["dirs"] as $ndir){
			$res.= '<a href="?dir='.$ndir.'"/>'.basename($ndir).'</a> <br>'."\n";
		}	
		$i=0;
		foreach($re["pics"] as $pic){
			//$res.= '<a id="'.$i.'"" href="thumb.php?pic='.$pic.'&width=500&height=500" target="_blank" onclick="return test(this)"><img src="thumb.php?pic='.$pic.'&width=100&height=200" /></a>'."\n";
			$res.= '<a id="'.$i.'"" href="'.$pic.'" target="_blank" onclick="return show(this)"><img src="thumb.php?pic='.$pic.'&width=100&height=200" /></a>'."\n";
			$i++;
		}
		$res.='<br> <a href="zip.php?dir='.$dir.'" > download pics as zip</a>';
		$res.='<div id="preview" style="position:fixed;top:0;left:0;height:100%;width:100%;display:none;background-image: url(\'./thumb./trans.png\')" ></div>';
		return $res;	
	}	
	
	/**
	 * inhalt eines verzeichnisses ermitteln
	 */ 
	public static function getFilesOrDirs($dir='.'){
		$files=array();
		if (is_dir($dir) && $handle = opendir($dir)) {
			while (false !== ($file = readdir($handle))) {
				if ($file != "." && $file != "..") {
					$files[]=$file;
				}
			}
			closedir($handle);
		}
		return $files;
	}
	/**
	 * bilder oder verzeichnisse eines verzeichnisses ermitteln
	 */ 
	public static function getPicsOrDirs($dir='.'){
		$dirs=array();
		$pics=array();
		$files=self::getFilesOrDirs($dir);
		foreach($files as $file ){
			$typ=strstr($file,".");
			if( $typ !== false) {// es ist eine datei
				if(in_array(strtolower($typ),self::$types)){
					$pics[]=$dir.$file;
				}	
			}
			else {
				$dirs[]=$dir.$file;
			}	
		}	
		sort($dirs);
		sort($pics);
		return array("dirs"=>$dirs,"pics"=>$pics);
	}
	
}	


